<?php
/**
 * Klasa opisująca wiadomość mailową zgodnie z wytycznymi z dokumentu RFC-5322.
 * 
 * @author Marcin
 */

class Message {
	/**
	* @var $headerArray array[] Tablica przechowująca dane z nagłówka
	*/
	private $headerArray = array();

	/**
	 * @var $messageArray array[] Tablica przechowująca fragmenty wiadomości multi-part
	 */
	private $message = array();
	 
	
	/**
	 * Konstruktor kopiujący
	 */
	public function __construct($message=NULL) {
		if(NULL!=$message) {
			$this->from = $message->from;
			$this->to = $message->to;
			$this->subject = $message->subject;
			$this->contenttype = $message->contenttype;
			$this->date = $message->date;
		} 
	}
	/**
	* @method __get
	* @param $name String Nazwa elementu do pobrania
	* @return mixed Wartość elementu
	* 
	* "Magiczna metoda" zarządzająca pobieraniem danych z pól klasy
	*/
	public function __get($name) {
		if(!isset($this->headerArray[$name])) 
			return NULL;
		return $this->headerArray[$name];
	}

	/**
	* @method __set
	* @param $name String Nazwa elementu do zapisania
	* @param $value mixed Wartość elementu do zapisania
	* @return NULL
	* 
	* "Magiczna metoda" zarządzająca zapisywaniem danych do pól klasy
	*/
	public function __set($name, $value) {
		$this->headerArray[$name] = $value;
	}
		
	/**
	 * @method getMessage
	 * @return mixed Wartość pola message
	 */
	 public function getMessage() {
	 	return (isset($this->message)?$this->message:NULL);
	 }
		
	/**
	 * @method setMessage
	 * @param $message mixed Nowa wartość pola message
	 */
	 public function setMessage($message) {
	 	$this->message = $message;
	 }
	 
	/**
	 * @method toArray
	 * @return Obiekt w postaci tablicy
	 */
	 public function toArray() {
	 	return array('header'=>$this->headerArray, 'message'=>$this->message);
	 }
}
